package com.kkw.shoppingmall.seckill.scheduled;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * @author Kevin
 * @date 2021-06-21
 * 定时任务示例
 *
 *   1、@EnableScheduling 开启定时任务
 *   2、@Scheduled开启一个定时任务
 *   3、自动配置类TaskSchedulingAutoConfiguration
 *
 *
 * 异步任务示例  加多两个注解
 *  1、@EnableAsync 开启异步任务功能
 *  2、@Async 给希望异步执行方法加上
 *  3、自动配置类 TaskExecutionAutoConfiguration
 *
 *
 *   解决：使用异步+定时任务来完成定时任务不阻塞功能
 *
 *
 **/

@Slf4j
@Component
//@EnableScheduling
//@EnableAsync
public class HelloSchedule {
    /**
     * 1、Spring默认的定时任务  只有6位组成，不允许第7位 年出现
     * 2、在周几的位置 1-7代表从周一到周日
     * 3、定时任务不应该阻塞，spring默认是阻塞的
     *    1）使用异步编排
     *    2）使用定时任务线程池
     *    spring.task.scheduling.pool.size=5(springboot版本不同 有时候还是会阻塞使用不了)
     *    3)让定时任务异步执行
     *      异步任务
     */
//    @Async
//    @Scheduled(cron = "* * * * * ?")
    public void hello() throws InterruptedException {

        log.info("hello");
        Thread.sleep(3000);
    }
}
